//
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.laporanrekapitulasanggaranrabunit;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.sadhar.errhandler.ClassAntiNull;
import org.sadhar.sia.common.ClassSession;
import org.sadhar.sia.framework.ClassApplicationModule;
import org.zkoss.zul.Filedownload;
import org.zkoss.zul.Label;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listhead;
import org.zkoss.zul.Listheader;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Messagebox;

/**
 *
 * @author kris
 */
public class LaporanRekapitulasiAnggaranRABUnitWnd extends ClassApplicationModule {

    private Label lblTahunAnggaran;
    private Listbox lstboxReport;
    private ClassSession session;
    private LaporanRekapitulasiAnggaranRABUnitDAO rekapitulasiAnggaranRABUnitDAO;

    public LaporanRekapitulasiAnggaranRABUnitWnd() {
        rekapitulasiAnggaranRABUnitDAO = new LaporanRekapitulasiAnggaranRABUnitDAOImpl();
    }

    public void onCreate() throws Exception {
        lblTahunAnggaran = (Label) getFellow("lblTahunAnggaran");
        lstboxReport = (Listbox) getFellow("lstboxReport");
        session = new ClassSession("2009", "");
        lblTahunAnggaran.setValue(session.getThnAnggaran());
        createReport();
    }

    public void createReport() throws Exception {
        String tahunKelompok = rekapitulasiAnggaranRABUnitDAO.getTahunKelompokAnggaranYangDigunakan(session.getThnAnggaran());
        Listhead listhead = lstboxReport.getListhead();
        Listheader listheader = new Listheader(" No", "", "2px");
        listhead.appendChild(listheader);


        rekapitulasiAnggaranRABUnitDAO.createTabelTemp();
        for (Map map : rekapitulasiAnggaranRABUnitDAO.getResultForReport(tahunKelompok, session.getThnAnggaran())) {
          //  Listitem item = new Listitem();
          //  item.setValue(map);
          //  item.appendChild(new Listcell(map.get("Nama_unit_kerja").toString()));


         /*   Listheader listheader = new Listheader(map.get("namaPosBiaya").toString(), "", "100px");
            listhead.appendChild(listheader);


            for (Map m : rekapitulasiAnggaranRABUnitDAO.getResultForReport(tahunKelompok, session.getThnAnggaran())) {
                if (m.get("namaPosBiaya").equals(map.get("namaPosBiaya")) && m.get("Nama_unit_kerja").equals(map.get("Nama_unit_kerja"))) {
                    item.appendChild(new Listcell(map.get("hasil").toString()));
                } else {
                    item.appendChild(new Listcell("-"));
                }
            }
            */


            if (rekapitulasiAnggaranRABUnitDAO.getBarisUnitKerja(map.get("Nama_unit_kerja").toString()).equals("0")){
                rekapitulasiAnggaranRABUnitDAO.isiUnit(map.get("Nama_unit_kerja").toString());
            }

            if (rekapitulasiAnggaranRABUnitDAO.getKolomPosBiaya(map.get("kodePosBiaya").toString().trim()).equals("-")){
                rekapitulasiAnggaranRABUnitDAO.tambahKolom(map.get("kodePosBiaya").toString(), map.get("namaPosBiaya").toString());
            }
            rekapitulasiAnggaranRABUnitDAO.isiKolom(rekapitulasiAnggaranRABUnitDAO.getBarisUnitKerja(map.get("Nama_unit_kerja").toString()), map.get("kodePosBiaya").toString(), map.get("hasil").toString());
           // lstboxReport.appendChild(item);
        }


        for (Map map : rekapitulasiAnggaranRABUnitDAO.getHeader()) {
            for (Map map2 : rekapitulasiAnggaranRABUnitDAO.getFields2()) {
                String namaKolom=map2.get("Field").toString();
                listheader = new Listheader(map.get(namaKolom).toString(), "", "100px");
                listhead.appendChild(listheader);
            }
        }

        for (Map map : rekapitulasiAnggaranRABUnitDAO.getDataReport()) {
            Listitem item = new Listitem();
            item.setValue(map);
            item.appendChild(new Listcell(map.get("id").toString()));

            for (Map map2 : rekapitulasiAnggaranRABUnitDAO.getFields2()) {
                String namaKolom=map2.get("Field").toString();
                item.appendChild(new Listcell(map.get(namaKolom).toString()));
            }
            lstboxReport.appendChild(item);
        }

        rekapitulasiAnggaranRABUnitDAO.dropTabelTemp();

    }

     public void export_to_csv(Listbox listbox) {
        String s = ";";
        StringBuffer sb = new StringBuffer();

        for (Object head : listbox.getHeads()) {
          String h = "";
          for (Object header : ((Listhead) head).getChildren()) {
            h += ((Listheader) header).getLabel() + s;
          }
          sb.append(h + "\n");
        }
        for (Object item : listbox.getItems()) {
          String i = "";
          for (Object cell : ((Listitem) item).getChildren()) {
            i += ((Listcell) cell).getLabel() + s;
          }
          sb.append(i + "\n");
        }
        Filedownload.save(sb.toString().getBytes(), "text/plain", "hasilRekapAnggaran.csv");
      }

     public void btnExportOnClick(){
         export_to_csv(lstboxReport);
     }
}
